/*
 * DirectorioUtil.java
 *
 * Created on 29 de noviembre de 2005, 22:32
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package fmap.utils;

import fmap.DatosCompartidos;
import java.io.*;

/**
 *
 * @author javi
 */
public class DirectorioUtil
{
    
    /** Creates a new instance of DirectorioUtil */
    public DirectorioUtil ()
    {
    }
    
    
    /** Obtiene el numero de nodos de un directorio y todos sus subdirectorios */
    public int getNodosDirectorio (String ruta)
    {
        int numNodos = 0;
        File dir = new File (ruta);
        File[] aDir = dir.listFiles ();
        
        for(int i=0;i<aDir.length;i++)
        {
            try
            {
                if( aDir[i].isDirectory () && aDir[i].listFiles ().length > 0 )
                {
                    numNodos += getNodosDirectorio (aDir[i]);
                }
                
                numNodos++;
            }
            catch (Exception e)
            {
                
                DatosCompartidos.getJFrameNewMapF ().setTextLogNewMapF ( "ERROR Calculando número de nodos en: "+aDir[i].getPath ()+"/"+aDir[i].getName (), false);
            }
        }
        return numNodos;
    }
    
    public int getNodosDirectorio (File dir)
    {
        int numNodos = 0;
        File[] aDir = dir.listFiles ();
        
        for(int i=0;i<aDir.length;i++)
        {
            try
            {
//&& aDir[i].listFiles().length > 0 )
                if(aDir[i].isDirectory ())
                {
                    
                    numNodos += getNodosDirectorio (aDir[i]);
                    
                }
            }
            catch(Exception e)
            {
                DatosCompartidos.getJFrameNewMapF ().setTextLogNewMapF ( "ERROR Calculando número de nodos en: "+aDir[i].getPath ()+"/"+aDir[i].getName (), false);
                
//                e.printStackTrace ();
            }
//            System.out.println("FREE MEMORY"+Runtime.getRuntime ().freeMemory ());
            numNodos++;
        }
        return numNodos;
    }
    
    
    public void creaDirectorio ( String ruta )
    {
        File f = new File (ruta);
        
        f.mkdir ();
    }
    
    
    public void eliminaDirectorio ( String ruta )
    {
        try
        {
            File d = new File (ruta);
            
            if( d.exists () == true )
            {
                /** Obtenemos y eliminamos los ficheros del directorio */
                File[] f = d.listFiles ();
                for(int i=0; i<f.length; i++)
                {
                    f[i].delete ();
                }

                /** Finalmente eliminamos el directorio */
                d.delete ();
            }
        }
        catch( Exception e )
        {
            DatosCompartidos.getJFrameMain ().setLblMsj ("Error eliminando ficheros");
        }
    }
    
}